package com.zp.self.module.level_4_算法练习.数据结构.数组;
import org.junit.Test;

import java.util.LinkedList;
import java.util.List;

/**
 * @author By ZengPeng
 */
public class 力扣_989_数组形式的整数加法 {
    @Test
    public void main() {
        
        Solution solution = new 力扣_989_数组形式的整数加法().new Solution();
        System.out.println(solution.addToArrayForm(new int[]{1,2,0,0},34));
    }

    /**
     题目：整数的 数组形式 num 是按照从左到右的顺序表示其数字的数组。
         例如，对于 num = 1321 ，数组形式是 [1,3,2,1] 。
         给定 num ，整数的 数组形式 ，和整数 k ，返回 整数 num + k 的 数组形式 。

         示例 1：
         输入：num = [1,2,0,0], k = 34
         输出：[1,2,3,4]
         解释：1200 + 34 = 1234

         示例 2：
         输入：num = [2,7,4], k = 181
         输出：[4,5,5]
         解释：274 + 181 = 455

         示例 3：
         输入：num = [2,1,5], k = 806
         输出：[1,0,2,1]
         解释：215 + 806 = 1021

     分析：【P 💖💖】
        1.遍历：从后向前，记录进位
            --执行耗时:2 ms,击败了99.58% 的Java用户
            --编码耗时:[17:28]

     边界值 & 注意点：
        1.
     **/
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public List<Integer> addToArrayForm(int[] num, int k) {
        LinkedList<Integer> res = new LinkedList<>();
        int pro = 0,index = num.length-1;
        while (k>0 || index>=0 || pro==1){
            int sum = (k % 10) +pro + (index<0?0:num[index]);
            if(sum>9){
                pro=1;
                sum = sum-10;
            }else
                pro =0;
            res.addFirst(sum);
            k = k/10;
            index--;
        }
        return res;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}